home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Whiteline: delta
/
whiteline CD Series - delta.iso
/
tex
/
tools
/
lettgf.dtx
(
.txt
)
< prev
next >
Wrap
LaTeX Document
|
1995-11-25
|
103KB
|
2,773 lines
% \OnlyDescription
% \iffalse meta-comment
% Copyright 1995 Gundolf Frank.
% All rights reserved. For further copyright information see the file
% legal.txt, and any other copyright indicated in this file.
% This system is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
% IMPORTANT NOTICE:
% For error reports in case of UNCHANGED versions see bugs.txt.
% Please do not request updates from us directly. Distribution is
% done through Mail-Servers and TeX organizations.
% You are not allowed to change this file.
% You are allowed to distribute this file under the condition that
% it is distributed together with all files mentioned in manifest.txt.
% If you receive only some of these files from someone, complain!
% You are NOT ALLOWED to distribute this file alone. You are NOT
% ALLOWED to take money for the distribution or use of either this
% file or a changed version, except for a nominal charge for copying
% etc.
% \fi
%\CheckSum{2617}
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
%% Digits \0\1\2\3\4\5\6\7\8\9
%% Exclamation \! Double quote \" Hash (number) \#
%% Dollar \$ Percent \% Ampersand \&
%% Acute accent \' Left paren \( Right paren \)
%% Asterisk \* Plus \+ Comma \,
%% Minus \- Point \. Solidus \/
%% Colon \: Semicolon \; Less than \<
%% Equals \= Greater than \> Question mark \?
%% Commercial at \@ Left bracket \[ Backslash \\
%% Right bracket \] Circumflex \^ Underscore \_
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
% \iffalse
% \section{Identification}
% This document class can only be used with \LaTeXe, so we make
% sure that an appropriate message is displayed when another \TeX{}
% format is used.
% \begin{macrocode}
%<+lettGF>\newcommand{\ClassName}{lettGF}
\newcommand{\Version}{0.91$\beta$}
%<+lettGF>\NeedsTeXFormat{LaTeX2e}[1994/12/01]
% \end{macrocode}
% Announce the Class name and its version.
% \begin{macrocode}
%<+lettGF>\ProvidesClass{\ClassName}
%<10pt>\ProvidesFile{size10.clo}
%<11pt>\ProvidesFile{size11.clo}
%<12pt>\ProvidesFile{size12.clo}
%<leqno>\ProvidesFile{leqno.clo}
%<fleqn>\ProvidesFile{fleqn.clo}
%<*driver>
\ProvidesFile{lettGF.drv}
%</driver>
[1995/07/26 v\Version
%<+lettGF> Extended LaTeX document class from Standard LaTeX document class 'letter'
%<+lettGF> Written by Gundolf Frank @ AC.Maus.de]
%<10pt|11pt|12pt> Standard LaTeX file (size option)]
%<leqno> Standard LaTeX option (left equation numbers)]
%<fleqn> Standard LaTeX option (flush left equations)]
% \end{macrocode}
% \section{The documentation driver file}
% We have our own document class to format the \LaTeXe
% documentation.
% \begin{macrocode}
%<*driver>
\documentclass{ltxdoc}
\usepackage{t1enc}
% \end{macrocode}
% We don't want everything to appear in the index.
% \begin{macrocode}
\DoNotIndex{\@M,\@badmath}
\DoNotIndex{\@centercr}
\DoNotIndex{\@empty,\@ignoretrue}
\DoNotIndex{\@ixpt}
\DoNotIndex{\@minus,\@ne,\@plus}
\DoNotIndex{\\,\addtolength}
\DoNotIndex{\advance,\Alph,\alph}
\DoNotIndex{\arabic,\ast,\begin,\begingroup,\bfseries,\bgroup,\box}
\DoNotIndex{\bullet}
\DoNotIndex{\cdot,\cr,\day,\DeclareOption}
\DoNotIndex{\def,\DocInput,\documentclass}
\DoNotIndex{\DoNotIndex,\egroup,\ifx,\else,\fi,\endtrivlist}
\DoNotIndex{\EnableCrossrefs,\end,\end@dblfloat,\end@float,\endgroup}
\DoNotIndex{\endlist,\everycr,\ExecuteOptions}
\DoNotIndex{\filedate,\filename,\fileversion}
\DoNotIndex{\global,\halign,\hangindent,\hbox,\hfil,\hfill,\hrule}
\DoNotIndex{\hsize,\hskip,\hspace,\hss,\ifcase,\or,\fi}
\DoNotIndex{\ifvmode,\fi,\ifnum,\fi,\input}
\DoNotIndex{\kern,\leavevmode,\let,\leftmark}
\DoNotIndex{\list,\llap,\long,\m@ne,\m@th,\mark}
\DoNotIndex{\month,\newcommand,\newcounter,\newenvironment}
\DoNotIndex{\NeedsTeXFormat,\newdimen}
\DoNotIndex{\newpage,\nobreak,\noindent,\number}
\DoNotIndex{\p@}
\DoNotIndex{\pagestyle,\par}
\DoNotIndex{\penalty,\PrintChanges,\PrintIndex,\ProcessOptions}
\DoNotIndex{\protect,\ProvidesClass,\raggedbottom,\raggedright}
\DoNotIndex{\refstepcounter,\relax,\renewcommand,\reset@font}
\DoNotIndex{\rightmargin,\rlap,\rmfamily,\roman}
\DoNotIndex{\roman,\setbox,\setcounter,\setlength}
\DoNotIndex{\skip,\slshape,\space}
\DoNotIndex{\trivlist,\typeout,\tw@}
\DoNotIndex{\vskip,\vspace,\year,\z@}
% \end{macrocode}
% We do want an index, using linenumbers
% \begin{macrocode}
\CodelineNumbered
\CodelineIndex
\EnableCrossrefs
\RecordChanges
% \end{macrocode}
% We use so many \file{docstrip} modules that we set the
% \texttt{StandardModuleDepth} counter to 1.
% \begin{macrocode}
\setcounter{StandardModuleDepth}{1}
% \end{macrocode}
% The following command retrieves the date and version information
% from the file.
% \begin{macrocode}
\GetFileInfo{lettGF.drv}
% \end{macrocode}
% Some commonly used abbreviations
% \begin{macrocode}
\newcommand*{\Lopt}[1]{\textsf {#1}}
\newcommand*{\file}[1]{\texttt {#1}}
\newcommand*{\Lcount}[1]{\textsl {\small#1}}
\newcommand*{\pstyle}[1]{\textsl {#1}}
% \end{macrocode}
% We also want the full details.
% \begin{macrocode}
\begin{document}
\DocInput{lettGF.dtx}
\PrintIndex
\PrintChanges
\end{document}
%</driver>
% \end{macrocode}
% \fi
% \changes{v0.91$\beta$}{1995/8/1}
% {\\
% -First version of LettGF.DTX}
% \changes{v0.90$\beta$}{1995/7/26}
% {\\
% -First version for \LaTeX2e{}.\\
% -The most parts work now with the Style 'ifthenelse'.\\
% -The MultiLetter-function is now more easy and better.\\
% -And more or less great changes are made with the translation
% to \LaTeX2e{} (Option DIN (Din $\rightarrow$ a4paper etc.)}
% \changes{v0.61$\beta$}{1994/12/12}
% {\\
% -Error in the closingtext corrected.\\
% -Manual updated.\\
% -The Style is now shorter.\\
% -You can search now directly for a address in the datafile.}.
% \changes{v0.60$\beta$}{1994/12/6}
% {\\
% -Small error in the signature and picture corrected.\\
% -The INI-file is now new organised. Different User can use it now.}
% \changes{v0.53$\beta$}{1994/5/2}
% {\\
% -At multiletter every letter can get a new closingtext.\\
% -Faxnumber and email-address are now saved in the data-file.\\
% -You don't need any \% behind each line in the data-file.}
% \changes{v0.52$\beta$}{1994/2/28}
% {\\
% -In the data-file are only three posibilities at contact.\\
% -Controll output is killed.\\
% -Small Errors are corrected.}
% \changes{v0.51$\beta$}{1994/2/26}
% {\\
% -With Faxoption the total pagenumber is shown.\\
% -Error with the textlength is corrected.}
% \changes{v0.50$\beta$}{1994/2/24}
% {\\
% -First official betaversion.\\
% -New: Multiletterfunction.}
% \iffalse
% Copyright (C) 1995 Gundolf Frank, all rights reserved.
% \fi
% \author{ Gundolf Frank}
% \title{Extended Letter Document Class for \LaTeX{} version \Version}
% \date{\filedate}
% \maketitle
% \tableofcontents
% \section{Introduction}
% This \LaTeXe\ package is a reimplementation of
% \texttt{brief.sty} by my own. It defines the class
% |\begin{letter}| which produces letter of the current
% document.
% \section{Copyright and Your Rights}
% Copyright 1995 Gundolf Frank. All rights reserved.
% You are not allowed to change this part of the documentation.
% \subsection{Distribution of unchanged versions:}
% You are NOT ALLOWED to take money for the distribution or use of
% these files except for a nominal charge for copying etc.
% Redistribution of unchanged files is allowed provided that all files
% listed in the corresponding package README file are distributed
% including this readme file.
% If you receive only some of these files from someone, complain!
% However, if these files are distributed by established suppliers as
% part of a complete TeX distribution, and the structure of the
% distribution would make it difficult to distribute the whole set of
% files, *those parties* are allowed to distribute only some of the
% files provided that it is made clear that the user will get a
% complete distribution-set upon request to that supplier (not me).
% Notice that this permission is not granted to the end user.
% \subsection{Generation and distribution of changed versions:}
% The generation of changed versions of the files included in the
% packages is allowed under the following restrictions:
% \begin{itemize}
% \item
% You rename the file before you make any changes to it.
% \item
% You acknowledge the origin of the original version in the file and
% keep the information that it (or a changed version) has to be
% distributed under the restrictions mentioned in this file.
% \item
% You change the ERROR REPORT address so that we don't get error
% reports for files *not* maintained by us.
% \end{itemize}
% The distribution of changed versions of the files included in the
% packages is allowed under the following restrictions:
% \begin{itemize}
% \item
% You provide the user with information how to obtain the original
% package or, even better, distribute it with your files.
% \item
% You make sure that the changed versions contain a notice that
% prevents others to take money for distribution or use of your
% files, i.e. they have to be distributed under the restrictions
% mentioned in this file.
% \item
% You inform us that you created a changed version of the files.
% This is only necessary if you want to distribute it to others.
% \end{itemize}
% \subsection{Error reports:}
% Before you report an error please check that
% \begin{itemize}
% \item
% the error is not already mentioned in the *.bug file of the
% distribution. (In this case it is a feature :-)
% \item
% the error isn't caused by obsolete versions of other software;
% LaTeX from 1986 is a good candidate ...
% \item
% you use an original version of the package.
% \end{itemize}
% If you think you found a genuine bug please report it together
% with the following information:
% \begin{itemize}
% \item
% version of the file
% \item
% version (date!) of your LaTeX
% \item
% a short test file showing the behavior with all unnecessary
% code removed.
% \item
% a transcript (log file) of the session that shows the error.
% \end{itemize}
% Please note that it is important to make the file as small as possible
% to allow us to find and fix the error soon.
% Error reports in case of UNCHANGED versions to\par
% \begin{center}
% \begin{tabular}{ll}
% & Gundolf Frank\\
% & Triere Str.116\\
% & 52078 Aachen\\
% Internet:& <gundolf\_frank.ac.maus.de>\\
% Mausnet: & Gundolf Frank @ AC\\
% \end{tabular}
% \end{center}
% Please send error reports for contributed files to the original authors.
% \section{The User Interface}
% This section defines everything an average user should know.
% All commands, which you can use in the original style from the \LaTeX
% 3 team, are also available, only more commands are included. You
% don't have to change anything in your old letters, only the output
% looks a little bit other.
% \subsection[\string\bslash\space package\{Multiletter\}]
% {\bslash package\{MultiLetter\}}
% The most difference in usage result from the including the package
% <MultiLetter>, which handeles the addressfiles and of course the
% multiletter function. So read also the documentation of this file,
% which desribes the structure of the addressfile.
% \subsection{The functions of the options}
% \DeleteShortVerb{\|}
% \begin{tabular}{|l|p{9cm}|}
% \hline
% a4paper & \\
% a5paper & \\
% b5paper & \\
% letterpaper & \\
% legalpaper & \\
% executivepaper & Chose the papersize.\\
% \hline
% landscape & Switches the values of paperheight and
% paperwidth.\\
% \hline
% 10pt & \\
% 11pt & \\
% 12pt & Coosing the size of the characters.\\
% \hline
% leqno & To put the equation number on the left side of an
% equation.\\
% \hline
% fleqn & To get the displayed math environments to print the
% contents flush left (with an indentation).\\
% \hline
% bank & Print the bankconnection in the footline.\\
% \hline
% address & Print the fulladdress in the footline.\\
% \hline
% noheader & Print no headline\\
% \hline
% fax & Print on the first page some special fax thinks,
% as the total pagenumber and time.\\
% \hline
% german & \\
% english & Select the used languages.\\
% \hline
% \end{tabular}
% \MakeShortVerb{\|}
% \subsection{An example}
%\begin{verbatim}
% \documentclass[12pt,a4paper,english]{lettgf}
% \Signature{Zipper}
% \Fromstreet{Liverpoolstr. 29}
% \Fromlocation{DF-4567-Birmingthon}
% \Fromname{Frank Zipper}
% \begin{document}
% \begin{letter}[firstname]{Thomas}
% \opening{}
% How are you. I write this letter without a special reason.
% \closing{}
% \end{letter}
% \end{document}
%\end{verbatim}
% In this example any |Frank Zipper| write s a nosense letter to a person
% with the first name |Thomas|.
% \subsection[\string\bslash\space begin\{letter\}\{\ldots\}]
{\bslash begin\{letter\}$[$\#1$]$\{\#2\}}
% This command begins a letter with the name and the address. The first
% parameter is the searchoption (e.g. firstname, fax, telephone) and the
% second parameter the string you search for. The first one is optional.
% The letter ends with |\end{letter}|.
% \subsection[\string\bslash\space opening\{\ldots\}\&
% \string\bslash\space closing\{\ldots\}]
% {\bslash opening$[$\#1$]$\{\#2\}\&
% \bslash closing\{\#1\}}
% |\opening{\ldots}| und |\closing{\ldots}| writes the
% text of the beginning and of the letter. It also sets the address. The
% signature is set below the closing text and if you use the fax-option
% the scanned signature is seted too. In the opening text you can put a
% abbrevation in the first parameter and also in the closing, e.g.
% |`Yf'| in the closing text you get |`Yours faithfully'| in the letter.
% If you want to know more about it look in the source code under
% option english in the <MultiLetter>-Style.
% \StopEventually{}
% \section{Loading Packages}
% The class file needs three additional packages.
% \begin{macrocode}
%<*lettGF>
\RequirePackage{ifthen}
\RequirePackage{german}
\RequirePackage{MultiLetter}
% \end{macrocode}
% \section{Initial Code}
% In this part we define a few commands that are used later on.
% \begin{macro}{\@ptsize}
% This control sequence is used to store the second digit of the
% pointsize we are typesetting in. So, normally, it's value is one
% of 0, 1 or 2.
% \begin{macrocode}
%<*lettGF>
\newcommand\@ptsize{}
% \end{macrocode}
% \end{macro}
% \subsection{Setting Paper Sizes}
% The variables |\paperwidth| and |\paperheight| should reflect the
% physical paper size after trimming. For desk printer output this
% is usually the real paper size since there is no post-processing.
% \begin{macrocode}
\DeclareOption{a4paper}
{\setlength\paperheight {297mm}%
\setlength\paperwidth {210mm}}
\DeclareOption{a5paper}
{\setlength\paperheight {210mm}%
\setlength\paperwidth {148mm}}
\DeclareOption{b5paper}
{\setlength\paperheight {250mm}%
\setlength\paperwidth {176mm}}
\DeclareOption{letterpaper}
{\setlength\paperheight {11in}%
\setlength\paperwidth {8.5in}}
\DeclareOption{legalpaper}
{\setlength\paperheight {14in}%
\setlength\paperwidth {8.5in}}
\DeclareOption{executivepaper}
{\setlength\paperheight {10.5in}%
\setlength\paperwidth {7.25in}}
% \end{macrocode}
% The option \Lopt{landscape} switches the values of |\paperheight|
% and |\paperwidth|, assuming the dimensions wer given for portrait
% paper.
% \begin{macrocode}
\DeclareOption{landscape}
{\setlength\@tempdima {\paperheight}%
\setlength\paperheight {\paperwidth}%
\setlength\paperwidth {\@tempdima}}
% \end{macrocode}
% \subsection{Choosing the type size}
% The type size options are handled by defining |\@ptsize| to
% contain the last digit of the size in question and branching on
% |\ifcase| statements. This is done for historical reasons to stay
% compatible with other packages that use the |\@ptsize| variable
% to select special actions. It makes the declarations of size
% options less than 10pt difficult, although one can probably use
% \texttt{9} and \texttt{8} assuming that a class wont define both
% \Lopt{8pt} and \Lopt{18pt} options.
% \begin{macrocode}
\DeclareOption{10pt}{\renewcommand\@ptsize{0}}
\DeclareOption{11pt}{\renewcommand\@ptsize{1}}
\DeclareOption{12pt}{\renewcommand\@ptsize{2}}
% \end{macrocode}
% \subsection{Two-side or one-side printing}
% The option \Lopt{twoside} and option \Lopt{oneside} decide between
% two-sided or one-sided printing
% \begin{macrocode}
\DeclareOption{twoside}{\@twosidetrue \@mparswitchtrue}
\DeclareOption{oneside}{\@twosidefalse \@mparswitchfalse}
% \end{macrocode}
% \subsection{Draft option}
% If the user requests \Lopt{draft} we show any overfull boxes.
% We could probably add some more interesting stuff to this option.
% \begin{macrocode}
\DeclareOption{draft}{\setlength\overfullrule{5pt}}
\DeclareOption{final}{\setlength\overfullrule{0pt}}
% \end{macrocode}
% \subsection{Equation numbering on the left}
% The option \Lopt{leqno} can be used to get the equation numbers
% on the left side of the equation.
% \begin{macrocode}
\DeclareOption{leqno}{\input{leqno.clo}}
% \end{macrocode}
% \subsection{Flush left displays}
% The option \Lopt{fleqn} redefines the displayed math environments
% in such a way that they come out flush left, with an indentation
% of |\mathindent| from the prevailing left margin.
% \begin{macrocode}
\DeclareOption{fleqn}{\input{fleqn.clo}}
% \end{macrocode}
% \subsection{Bankconnection}
% A new if to choose, whether the bankconnection is printed.
% \begin{macrocode}
\newboolean{bankconnection}
\setboolean{bankconnection}{false}
% \end{macrocode}
% The option \Lopt{bank} decide, whether the bankconnection is printed in the
% footline.
% \begin{macrocode}
\DeclareOption{bank}{\setboolean{bankconnection}{true}}
% \end{macrocode}
% \subsection{Full address}
% A new if to choose, if the full address is printed.
% \begin{macrocode}
\newboolean{fulladdress}
\setboolean{fulladdress}{false}
% \end{macrocode}
% The option \Lopt{address} decide, whether the full address is printed in the
% footer.
% \begin{macrocode}
\DeclareOption{address}{\setboolean{fulladdress}{true}}
% \end{macrocode}
% \subsection{No headline}
% A new if to choose, whether headline is printed.
% \begin{macrocode}
\newboolean{noheader}
\setboolean{noheader}{false}
% \end{macrocode}
% The option \Lopt{fleqn} decide, whether the headline is printed.
% \begin{macrocode}
\DeclareOption{noheader}{\setboolean{noheader}{true}}
% \end{macrocode}
% \subsection{Fax}
% A new if to choose, whether the letter is printed as fax.
% \begin{macrocode}
\newboolean{faxpaper}
\setboolean{faxpaper}{false}
% \end{macrocode}
% The option \Lopt{fax} decide, whether specialparts of the faxpaper are
% printed.
% \begin{macrocode}
\DeclareOption{fax}{\setboolean{faxpaper}{true}}
% \end{macrocode}
% \subsection{Languages}
% In the letter several words appear. They are stored in control sequences
% to be able to select a different language.
% \subsubsection{German}
% \begin{macrocode}
\DeclareOption{german}
{\germanTeX
\xdef\banknamestr{Bank}
\expandafter\def\csname\banknamestr\endcsname##1
{\def\bankname{##1}}
\xdef\banknrstr{BLZ}
\expandafter\def\csname\banknrstr\endcsname##1
{\def\banknr{##1}}
\xdef\accountnrstr{Kontonummer}
\expandafter\def\csname\accountnrstr\endcsname##1
{\def\accountnr{##1}}
\providecommand{\bankconnectionstr}{Bankverbindung}
\xdef\faxnrstr{Faxnummer}
\expandafter\def\csname\faxnrstr\endcsname##1
{\def\myfax{##1}}
\xdef\precodestr{Vorwahl}
\expandafter\def\csname\precodestr\endcsname##1
{\def\precode{##1}}
\xdef\telephonestr{Telefonnummer}
\expandafter\def\csname\telephonestr\endcsname##1
{\def\telephonenum{##1}}
\providecommand{\emailadrstr}{E-Mail-Adresse}
\def\EMail##1{\def\myemail{##1}}
\xdef\fromnamestr{Absendername}
\expandafter\def\csname\fromnamestr\endcsname##1
{\def\fromname{##1}}
\xdef\fromstreetstr{Absenderstrasse}
\expandafter\def\csname\fromstreetstr\endcsname##1
{\def\fromstreet{##1}}
\xdef\fromlocationstr{Absenderort}
\expandafter\def\csname\fromlocationstr\endcsname##1
{\def\fromlocation{##1}}
\xdef\fromsigstr{Unterschrift}
\expandafter\def\csname\fromsigstr\endcsname##1
{\def\fromsig{##1}}
\providecommand{\@datelong}{\dategerman}
\providecommand{\@dateshort}{
\number\day.\number\month.\number\year}
\xdef\datestr{Datum}
\expandafter\def\csname\datestr\endcsname##1{\def\@date{##1}}
\xdef\timestr{Uhrzeit}
\expandafter\def\csname\timestr\endcsname##1{\def\@time{##1}}
\newcommand{\psname}{PS.:}
\newcommand{\Anlagen}[1]{encl{##1}}
\newcommand{\Verteiler}[2]{cc{##1}}
\newcommand{\pagenumstr}{Seitenanzahl}
\newcommand{\yrefstr}{Ihr Zeichen}
\newcommand{\mrefstr}{Mein Zeichen}
\newcommand{\ymaildatestr}{Ihre Nachricht vom}
\newcommand{\subjectstr}{}
\newcommand{\Betrifft}[1]{\def\@subject{##1}}
\newcommand{\Anrede}[2][empty]{\opening[##1]{##2}}
\newcommand{\Gruss}[1]{\closing{##1}}
\newcommand{\errormesc}{Es wurde bei \string\begin{letter} ein
Suchkriterium\MessageBreak angegeben!}
\newcommand{\errorhelpc}{Bei \string\begin{letter}[Optionen]
{suchkriterium} darf kein Suchkriterium
\MessageBreak im Serienbriefmodus
angegeben werden.\MessageBreak Meistens
bringt Weitercompilien das gew
nschte
Ergebnis}
% \end{macrocode}
% \subsubsection{English}
% \begin{macrocode}
\DeclareOption{english}
{\originalTeX
\selectlanguage{english}
\xdef\banknamestr{Bankname}
\expandafter\def\csname\banknamestr\endcsname##1
{\def\bankname{##1}}
\xdef\banknrstr{Banknumber}
\expandafter\def\csname\banknrstr\endcsname##1
{\def\banknr{##1}}
\xdef\accountnrstr{Accountnumber}
\expandafter\def\csname\accountnrstr\endcsname##1
{\def\accountnr{##1}}
\providecommand{\bankconnectionstr}{Bankconnection}
\xdef\faxnrstr{Faxnumber}
\expandafter\def\csname\faxnrstr\endcsname##1
{\def\myfax{##1}}
\xdef\precodestr{Precode}
\expandafter\def\csname\precodestr\endcsname##1
{\def\precode{##1}}
\xdef\telephonestr{Telephonenumber}
\expandafter\def\csname\telephonestr\endcsname##1
{\def\telephonenum{##1}}
\providecommand{\emailadrstr}{Email-address}
\def\email##1{\def\myemail{##1}}
\xdef\fromnamestr{Sendername}
\expandafter\def\csname\fromnamestr\endcsname##1
{\def\fromname{##1}}
\xdef\fromstreetstr{Senderstreet}
\expandafter\def\csname\fromstreetstr\endcsname##1
{\def\fromstreet{##1}}
\xdef\fromlocationstr{Senderlocation}
\expandafter\def\csname\fromlocationstr\endcsname##1
{\def\fromlocation{##1}}
\xdef\fromsigstr{Signature}
\expandafter\def\csname\fromsigstr\endcsname##1
{\def\fromsig{##1}}
\providecommand{\@datelong}{\dateenglish}
\providecommand{\@dateshort}{
\number\day.\number\month.\number\year}
\xdef\datestr{Date}
\expandafter\def\csname\datestr\endcsname##1
{\def\@date{##1}}
\xdef\timestr{Time}
\expandafter\def\csname\timestr\endcsname##1
{\def\@time{##1}}
\newcommand{\psname}{PS.:}
\newcommand{\pagenumstr}{Pages}
\newcommand{\yrefstr}{Your sign}
\newcommand{\mrefstr}{My sign}
\newcommand{\ymaildatestr}{Yout mail from}
\newcommand{\subjectstr}{}
\newcommand{\subject}[1]{\def\@subject{##1}}
\newcommand{\errormesc}{There is a search option at
\string\begin{letter}[options]
{search options}!}
\newcommand{\errorhelpc}{At \string\begin{letter}[options]
{search option} isn't a search option
allowed\MessageBreak in the
multiletter-mode.}
% \end{macrocode}
% \section{Executing Options}
% Here we execute the default options to initialize certain
% variables.
% \begin{macrocode}
\ExecuteOptions{a4paper,12pt,oneside,onecolumn,final}
% \end{macrocode}
% The |\ProcessOptions| command causes the execution of the code
% for every option \Lopt{foo} which is declared and for which the
% user typed the \Lopt{foo} option in his |\documentclass| command.
% For every option \Lopt{bar} he typed, which is not declared, the
% option is assumed to be a global option. All options will be
% passed as document options to any |\usepackage| command in the
% document preamble.
% \begin{macrocode}
\ProcessOptions
% \end{macrocode}
% Now that all the options have been executed we can load the
% chosen class option file that contains all size dependant code.
% \begin{macrocode}
\input{size1\@ptsize.clo}
% \end{macrocode}
% \section{Document Layout}
% \label{sec:maincode}
% In this section we are finally dealing with the nasty typographical
% details.
% \subsection{Fonts}
% \LaTeX\ offers the user commands to change the size of the font,
% relative to the `main' size. Each relative size changing command
% |\size| executes the command
% |\@setfontsize||\size|\meta{font-size}\meta{baselineskip} where:
% \begin{description}
% \item[\meta{font-size}] The absolute size of the font to use from
% now on.
% \item[\meta{baselineskip}] The normal value of |\baselineskip|
% for the size of the font selected. (The actual value will be
% |\baselinestretch| * \meta{baselineskip}.)
% \end{description}
% A number of commands, defined in the \LaTeX{} kernel, shorten the
% following definitions and are used throughout. They are:
% \begin{center}
% \begin{tabular}{ll@{\qquad}ll@{\qquad}ll}
% \verb=\@vpt= & 5 & \verb=\@vipt= & 6 & \verb=\@viipt= & 7 \\
% \verb=\@viiipt= & 8 & \verb=\@ixpt= & 9 & \verb=\@xpt= & 10 \\
% \verb=\@xipt= & 10.95 & \verb=\@xiipt= & 12 & \verb=\@xivpt= & 14.4\\
% ...
% \end{tabular}
% \end{center}
% \begin{macro}{\normalsize}
% \begin{macro}{\@normalsize}
% The user level command for the main size is |\normalsize|.
% Internally \LaTeX{} uses |\@normalsize| when it refers to the
% main size. |\@normalsize| will be defined to work like
% |\normalsize| if the latter is redefined from its default
% definition (that just issues an error message). Otherwise
% |\@normalsize| simply selects a 10pt/12pt size.
% The |\normalsize| macro also sets new values for\\
% |\abovedisplayskip|, |\abovedisplayshortskip| and
% |\belowdisplayshortskip|.
% \begin{macrocode}
%<*10pt|11pt|12pt>
\renewcommand{\normalsize}{%
%<*10pt>
\@setfontsize\normalsize\@xpt\@xiipt
\abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@
\abovedisplayshortskip \z@ \@plus3\p@
\belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@
%</10pt>
%<*11pt>
\@setfontsize\normalsize\@xipt{13.6}%
\abovedisplayskip 11\p@ \@plus3\p@ \@minus6\p@
\abovedisplayshortskip \z@ \@plus3\p@
\belowdisplayshortskip 6.5\p@ \@plus3.5\p@ \@minus3\p@
%</11pt>
%<*12pt>
\@setfontsize\normalsize\@xiipt{14.5}%
\abovedisplayskip 12\p@ \@plus3\p@ \@minus7\p@
\abovedisplayshortskip \z@ \@plus3\p@
\belowdisplayshortskip 6.5\p@ \@plus3.5\p@ \@minus3\p@
%</12pt>
% \end{macrocode}
% The |\belowdisplayskip| is always equal to the
% |\abovedisplayskip|. The parameters of the first level list are
% always given by |\@listI|.
% \begin{macrocode}
\belowdisplayskip \abovedisplayskip
\let\@listi\@listI}
% \end{macrocode}
% We initially choose the normalsize font.
% \begin{macrocode}
\normalsize
% \end{macrocode}
% \end{macro}
% \end{macro}
% \begin{macro}{\small}
% This is similar to |\normalsize|.
% \begin{macrocode}
\newcommand{\small}{%
%<*10pt>
\@setfontsize\small\@ixpt{11}%
\abovedisplayskip 8.5\p@ \@plus3\p@ \@minus4\p@
\abovedisplayshortskip \z@ \@plus2\p@
\belowdisplayshortskip 4\p@ \@plus2\p@ \@minus2\p@
\def\@listi{\leftmargin\leftmargini
\topsep 4\p@ \@plus2\p@ \@minus2\p@
\parsep 2\p@ \@plus\p@ \@minus\p@
\itemsep \parsep}%
%</10pt>
%<*11pt>
\@setfontsize\small\@xpt\@xiipt
\abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@
\abovedisplayshortskip \z@ \@plus3\p@
\belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@
\def\@listi{\leftmargin\leftmargini
\topsep 6\p@ \@plus2\p@ \@minus2\p@
\parsep 3\p@ \@plus2\p@ \@minus\p@
\itemsep \parsep}%
%</11pt>
%<*12pt>
\@setfontsize\small\@xipt{13.6}%
\abovedisplayskip 11\p@ \@plus3\p@ \@minus6\p@
\abovedisplayshortskip \z@ \@plus3\p@
\belowdisplayshortskip 6.5\p@ \@plus3.5\p@ \@minus3\p@
\def\@listi{\leftmargin\leftmargini
\topsep 9\p@ \@plus3\p@ \@minus5\p@
\parsep 4.5\p@ \@plus2\p@ \@minus\p@
\itemsep \parsep}%
%</12pt>
\belowdisplayskip \abovedisplayskip
% \end{macrocode}
% \end{macro}
% \begin{macro}{\footnotesize}
% This is similar to |\normalsize|.
% \begin{macrocode}
\newcommand{\footnotesize}{%
%<*10pt>
\@setfontsize\footnotesize\@viiipt{9.5}%
\abovedisplayskip 6\p@ \@plus2\p@ \@minus4\p@
\abovedisplayshortskip \z@ \@plus\p@
\belowdisplayshortskip 3\p@ \@plus\p@ \@minus2\p@
\def\@listi{\leftmargin\leftmargini
\topsep 3\p@ \@plus\p@ \@minus\p@
\parsep 2\p@ \@plus\p@ \@minus\p@
\itemsep \parsep}%
%</10pt>
%<*11pt>
\@setfontsize\footnotesize\@ixpt{11}%
\abovedisplayskip 8\p@ \@plus2\p@ \@minus4\p@
\abovedisplayshortskip \z@ \@plus\p@
\belowdisplayshortskip 4\p@ \@plus2\p@ \@minus2\p@
\def\@listi{\leftmargin\leftmargini
\topsep 4\p@ \@plus2\p@ \@minus2\p@
\parsep 2\p@ \@plus\p@ \@minus\p@
\itemsep \parsep}%
%</11pt>
%<*12pt>
\@setfontsize\footnotesize\@xpt\@xiipt
\abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@
\abovedisplayshortskip \z@ \@plus3\p@
\belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@
\def\@listi{\leftmargin\leftmargini
\topsep 6\p@ \@plus2\p@ \@minus2\p@
\parsep 3\p@ \@plus2\p@ \@minus\p@
\itemsep \parsep}%
%</12pt>
\belowdisplayskip \abovedisplayskip
%</10pt|11pt|12pt>
% \end{macrocode}
% \end{macro}
% \begin{macro}{\scriptsize}
% \begin{macro}{\tiny}
% \begin{macro}{\large}
% \begin{macro}{\Large}
% \begin{macro}{\LARGE}
% \begin{macro}{\huge}
% \begin{macro}{\Huge}
% These are all much simpler than the previous macros, they just
% select a new fontsize, but leave the parameters for displays and
% lists alone.
% \begin{macrocode}
%<*10pt>
\newcommand{\scriptsize}{\@setfontsize\scriptsize\@viipt\@viiipt}
\newcommand{\tiny}{\@setfontsize\tiny\@vpt\@vipt}
\newcommand{\large}{\@setfontsize\large\@xiipt{14}}
\newcommand{\Large}{\@setfontsize\Large\@xivpt{18}}
\newcommand{\LARGE}{\@setfontsize\LARGE\@xviipt{22}}
\newcommand{\huge}{\@setfontsize\huge\@xxpt{25}}
\newcommand{\Huge}{\@setfontsize\Huge\@xxvpt{30}}
%</10pt>
%<*11pt>
\newcommand{\scriptsize}{\@setfontsize\scriptsize\@viiipt{9.5}}
\newcommand{\tiny}{\@setfontsize\tiny\@vipt\@viipt}
\newcommand{\large}{\@setfontsize\large\@xiipt{14}}
\newcommand{\Large}{\@setfontsize\Large\@xivpt{18}}
\newcommand{\LARGE}{\@setfontsize\LARGE\@xviipt{22}}
\newcommand{\huge}{\@setfontsize\huge\@xxpt{25}}
\newcommand{\Huge}{\@setfontsize\Huge\@xxvpt{30}}
%</11pt>
%<*12pt>
\newcommand{\scriptsize}{\@setfontsize\scriptsize\@viiipt{9.5}}
\newcommand{\tiny}{\@setfontsize\tiny\@vipt\@viipt}
\newcommand{\large}{\@setfontsize\large\@xivpt{18}}
\newcommand{\Large}{\@setfontsize\Large\@xviipt{22}}
\newcommand{\LARGE}{\@setfontsize\LARGE\@xxpt{25}}
\newcommand{\huge}{\@setfontsize\huge\@xxvpt{30}}
\let\Huge=\huge
%</12pt>
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \subsection{Paragraphing}
% \begin{macro}{\lineskip}
% \begin{macro}{\normallineskip}
% These parameters control \TeX's behavior when two lines tend to
% come too close together.
% \begin{macrocode}
\setlength\lineskip{1\p@}
\setlength\normallineskip{1\p@}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \begin{macro}{\baselinestretch}
% This is used as a multiplier for |\baselineskip|. The default is
% to {\em not\/} stretch the baselines.
% \begin{macrocode}
\renewcommand\baselinestretch{}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\parskip}
% \begin{macro}{\parindent}
% |\parskip| gives extra vertical space between paragraphs and
% |\parindent| is the width of the paragraph indentation.
% Letters are typeset without paragraph indentation.
% \begin{macrocode}
\setlength\parskip{0.7em}
\setlength\parindent{0\p@}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \begin{macro}{\@lowpenalty}
% \begin{macro}{\@medpenalty}
% \begin{macro}{\@highpenalty}
% The commands |\nopagebreak| and |\nolinebreak| put in penalties
% to discourage these breaks at the point they are put in.
% They use |\@lowpenalty|, |\@medpenalty| or |\@highpenalty|,
% dependant on their argument.
% \begin{macrocode}
\@lowpenalty 51
\@medpenalty 151
\@highpenalty 301
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \begin{macro}{\clubpenalty}
% \begin{macro}{\widowpenalty}
% These penalties are used to discourage club and widow lines.
% Because we use their default values we only show them here,
% commented out.
% \begin{macrocode}
% \clubpenalty 150
% \widowpenalty 150
% \end{macrocode}
% \end{macro}
% \end{macro}
% \begin{macro}{\displaywidowpenalty}
% \begin{macro}{\predisplaypenalty}
% \begin{macro}{\postdisplaypenalty}
% Discourage (but not so much) widows in front of a math display
% and forbid breaking directly in front of a display. Allow break
% after a display without a penalty. Again the default values are
% used, therefore we only show them here.
% \begin{macrocode}
% \displaywidowpenalty 50
% \predisplaypenalty 10000
% \postdisplaypenalty 0
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \begin{macro}{\interlinepenalty}
% Allow the breaking of a page in the middle of a paragraph.
% \begin{macrocode}
% \interlinepenalty 0
% \end{macrocode}
% \end{macro}
% \begin{macro}{\brokenpenalty}
% We allow the breaking of a page after a hyphenated line.
% \begin{macrocode}
% \brokenpenalty 0
%</lettGF>
% \end{macrocode}
% \end{macro}
% \subsection{Page Layout}
% All margin dimensions are measured from a point one inch from the
% top and lefthand side of the page.
% \subsubsection{Vertical spacing}
% \begin{macro}{\headheight}
% \begin{macro}{\headsep}
% The |\headheight| is the height of the box that will contain the
% running head. The |\headsep| is the distance between the bottom
% of the running head and the top of the text. |\topskip| is the
% |\baselineskip| for the first line on a page, its value depends
% on the size option that was specified. Therefore it is
% initialized in one of the \file{size1x.clo} files.
% \LaTeX's output routine will not work properly if it has the
% value 0pt, so do not do that!
% \begin{macrocode}
%<*10pt|11pt|12pt>
\setlength\headheight{12\p@}
\setlength\headsep {45\p@}
%<10pt>\setlength\topskip {10\p@}
%<11pt>\setlength\topskip {11\p@}
%<12pt>\setlength\topskip {12\p@}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \begin{macro}{\footskip}
% The distance from the baseline of the box which contains the
% running footer to the baseline of last line of text is controlled
% by the |\footskip|.
% Bottom of page:
% \begin{macrocode}
\setlength\footskip{25\p@}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\maxdepth}
% \begin{macro}{\@maxdepth}
% The \TeX\ primitive register |\maxdepth| has a function that is
% similar to that of |\topskip|. The register |\@maxdepth| should
% always contain a copy of |\maxdepth|. In both plain \TeX\ and
% \LaTeX~2.09 |\maxdepth| had a fixed value of \texttt{4pt}; in
% native \LaTeX2e\ mode we let the value depend on the typesize. We
% set it so that |\maxdepth| $+$ |\topskip| $=$ typesize $\times
% 1.5$. As it happens, in these classes |\topskip| is equal to the
% typesize, therefor we set |\maxdepth| to half the value of
% |\topskip|.
% \begin{macrocode}
\setlength\maxdepth{.5\topskip}
\setlength\@maxdepth\maxdepth
% \end{macrocode}
% \end{macro}
% \end{macro}
% \subsubsection{The dimension of text}
% \begin{macro}{\textwidth}
% First, we calculate the maximum |\textwidth|, which we will allow
% on the selected paper and store it in |\@tempdima|. Then we store
% the length of a line with approximately 60--70 characters in
% |\@tempdimb|. The values given are more or less suitable when
% Computer Modern fonts are used.
% \begin{macrocode}
\setlength\@tempdima{\paperwidth}
\addtolength\@tempdima{-2in}
%<10pt> \setlength\@tempdimb{345\p@}
%<11pt> \setlength\@tempdimb{360\p@}
%<12pt> \setlength\@tempdimb{390\p@}
% \end{macrocode}
% Now we can set the |\textwidth|, depending on whether we will be
% setting one or two columns.
% In two column mode each {\em column} shouldn't be wider than
% |\@tempdimb| (which could happen on \textsc{a3} paper for
% instance).
% \begin{macrocode}
\if@twocolumn
\ifdim\@tempdima>2\@tempdimb\relax
\setlength\textwidth{2\@tempdimb}
\else
\setlength\textwidth{\@tempdima}
\fi
% \end{macrocode}
% In one column mode the text should not be wider than the minimum
% of the paperwidth (minus 2 inches for the margins) and the
% maximum length of a line as defined by the number of characters.
% \begin{macrocode}
\else
\ifdim\@tempdima>\@tempdimb\relax
\setlength\textwidth{\@tempdimb}
\else
\setlength\textwidth{\@tempdima}
\fi
\fi
% \end{macrocode}
% Here we modify the width of the text a little to be a whole
% number of points.
% \begin{macrocode}
\@settopoint\textwidth
% \end{macrocode}
% \end{macro}
% \begin{macro}{\textheight}
% Now that we have computed the width of the text, we have to take
% care of the height. The |\textheight| is the height of text
% (including footnotes and figures, excluding running head and
% foot).
% Again we compute this, depending on the papersize and depending
% on the baselineskip that is used, in order to have a whole number
% of lines on the page.
% \begin{macrocode}
\setlength\@tempdima{\paperheight}
% \end{macrocode}
% We leave at least a 1 inch margin on the top and the bottom of
% the page.
% \begin{macrocode}
\addtolength\@tempdima{-2in}
% \end{macrocode}
% We also have to leave room for the running headers and footers.
% \begin{macrocode}
\addtolength\@tempdima{-1.5in}
% \end{macrocode}
% Then we divide the result by the current |\baselineskip| and
% store this in the count register |\@tempcnta|, which then
% contains the number of lines that fit on this page.
% \begin{macrocode}
\divide\@tempdima\baselineskip
\@tempcnta=\@tempdima
% \end{macrocode}
% From this we can calculate the height of the text.
% \begin{macrocode}
\setlength\textheight{\@tempcnta\baselineskip}
% \end{macrocode}
% The first line on the page has a height of |\topskip|.
% \begin{macrocode}
\addtolength\textheight{\topskip}
% \end{macrocode}
% \end{macro}
% \subsubsection{Margins}
% \begin{macro}{\oddsidemargin}
% \begin{macro}{\evensidemargin}
% \begin{macro}{\marginparwidth}
% The values for |\oddsidemargin| and |\marginparwidth| will be set
% depending on the status of the |\if@twoside|.
% If |@twoside| is true (which is always the case for book) we make
% the inner margin smaller than the outer one.
% \begin{macrocode}
\setlength{\@tempdima}{\paperwidth}
\addtolength{\@tempdima}{-2in}
\addtolength{\@tempdima}{-\textwidth}
\setlength\oddsidemargin {.5\@tempdima}
\setlength\evensidemargin {\oddsidemargin}
% \end{macrocode}
% The width of the margin for text is set to the remainder of the
% width except for a `real margin' of white space of width 0.4in.
% A check should perhaps be built in to ensure that the (text)
% margin width does not get too small!
% \begin{macrocode}
\setlength\marginparwidth {.6\@tempdima}
\addtolength\marginparwidth {-0.4in}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \begin{macro}{\marginparsep}
% \begin{macro}{\marginparpush}
% The horizontal space between the main text and marginal notes is
% determined by |\marginparsep|, the minimum vertical separation
% between two marginal notes is controlled by |\marginparpush|.
% \begin{macrocode}
%<10pt> \setlength\marginparsep{11\p@}
%<11pt> \setlength\marginparsep{10\p@}
%<12pt> \setlength\marginparsep{10\p@}
%<10pt|11pt>\setlength\marginparpush{5\p@}
%<12pt>\setlength\marginparpush{7\p@}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \begin{macro}{\topmargin}
% The |\topmargin| is the distance between the top of `the
% printable area' --which is 1 inch below the top of the paper--
% and the top of the box which contains the running head.
% It can now be computed from the values set above.
% \begin{macrocode}
\setlength\topmargin{\paperheight}
\addtolength\topmargin{-2in}
\addtolength\topmargin{-\headheight}
\addtolength\topmargin{-\headsep}
\addtolength\topmargin{-\textheight}
\addtolength\topmargin{-\footskip} % this might be wrong!
% \end{macrocode}
% \end{macro}
% \subsubsection{Footnotes}
% \begin{macro}{\footnotesep}
% |\footnotesep| is the height of the strut placed at the beginning
% of every footnote. It equals the height of a normal
% |\footnotesize| strut in this
% class, thus no extra space occurs between footnotes.
% \begin{macrocode}
%<10pt>\setlength\footnotesep{6.65\p@}
%<11pt>\setlength\footnotesep{7.7\p@}
%<12pt>\setlength\footnotesep{8.4\p@}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\footins}
% |\skip\footins| is the space between the last line of the main
% text and the top of the first footnote.
% \begin{macrocode}
%<10pt>\setlength{\skip\footins}{9\p@ \@plus 4\p@ \@minus 2\p@}
%<11pt>\setlength{\skip\footins}{10\p@ \@plus 4\p@ \@minus 2\p@}
%<12pt>\setlength{\skip\footins}{10.8\p@ \@plus 4\p@ \@minus 2\p@}
%</10pt|11pt|12pt>
% \end{macrocode}
% \end{macro}
% \subsubsection{Float placement parameters}
% All float parameters are given default values in the \LaTeXe{}
% kernel. For this reason counters only need to be set with
% |\setcounter| and other parameters are set using |\renewcommand|.
% \paragraph{Limits for the placement of floating objects}
% \begin{macro}{\c@topnumber}
% The \Lcount{topnumber} counter holds the maximum number of
% floats that can appear on the top of a text page.
% \begin{macrocode}
%<*lettGF>
\setcounter{topnumber}{2}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\topfraction}
% This indicates the maximum part of a text page that can be
% occupied by floats at the top.
% \begin{macrocode}
\renewcommand{\topfraction}{.7}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\c@bottomnumber}
% The \Lcount{bottomnumber} counter holds the maximum number of
% floats that can appear on the bottom of a text page.
% \begin{macrocode}
\setcounter{bottomnumber}{1}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\bottomfraction}
% This indicates the maximum part of a text page that can be
% occupied by floats at the bottom.
% \begin{macrocode}
\renewcommand{\bottomfraction}{.3}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\c@totalnumber}
% This indicates the maximum number of floats that can appear on
% any text page.
% \begin{macrocode}
\setcounter{totalnumber}{3}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\textfraction}
% This indicates the minimum part of a text page that has to be
% occupied by text.
% \begin{macrocode}
\renewcommand{\textfraction}{.2}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\floatpagefraction}
% This indicates the minimum part of a page that has to be
% occupied by floating objects before a `float page' is produced.
% \begin{macrocode}
\renewcommand{\floatpagefraction}{.5}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\c@dbltopnumber}
% The \Lcount{dbltopnumber} counter holds the maximum number of
% two column floats that can appear on the top of a two column text
% page.
% \begin{macrocode}
\setcounter{dbltopnumber}{2}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\dbltopfraction}
% This indicates the maximum part of a two column text page that
% can be occupied by two column floats at the top.
% \begin{macrocode}
\renewcommand{\dbltopfraction}{.7}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\dblfloatpagefraction}
% This indicates the minimum part of a page that has to be
% occupied by two column wide floating objects before a `float
% page' is produced.
% \begin{macrocode}
\renewcommand{\dblfloatpagefraction}{.5}
%</lettGF>
% \end{macrocode}
% \end{macro}
% \paragraph{Floats on a text page}
% \begin{macro}{\floatsep}
% \begin{macro}{\textfloatsep}
% \begin{macro}{\intextsep}
% When a floating object is placed on a page with text, these
% parameters control the separation between the float and the other
% objects on the page. These parameters are used for both
% one-column mode and single-column floats in two-column mode.
% |\floatsep| is the space between adjacent floats that are moved
% to the top or bottom of the text page.
% |\textfloatsep| is the space between the main text and floats
% at the top or bottom of the page.
% |\intextsep| is the space between in-text floats and the text.
% \begin{macrocode}
%<*10pt>
\setlength\floatsep {12\p@ \@plus 2\p@ \@minus 2\p@}
\setlength\textfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@}
\setlength\intextsep {12\p@ \@plus 2\p@ \@minus 2\p@}
%</10pt>
%<*11pt>
\setlength\floatsep {12\p@ \@plus 2\p@ \@minus 2\p@}
\setlength\textfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@}
\setlength\intextsep {12\p@ \@plus 2\p@ \@minus 2\p@}
%</11pt>
%<*12pt>
\setlength\floatsep {12\p@ \@plus 2\p@ \@minus 4\p@}
\setlength\textfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@}
\setlength\intextsep {14\p@ \@plus 4\p@ \@minus 4\p@}
%</12pt>
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \begin{macro}{\dblfloatsep}
% \begin{macro}{\dbltextfloatsep}
% When floating objects that span the whole |\textwidth| are placed
% on a text page when we are in twocolumn mode the separation
% between the float and the text is controlled by |\dblfloatsep|
% and |\dbltextfloatsep|.
% |\dblfloatsep| is the space between adjacent floats that are moved
% to the top or bottom of the text page.
% |\dbltextfloatsep| is the space between the main text and floats
% at the top or bottom of the page.
% \begin{macrocode}
%<*10pt>
\setlength\dblfloatsep {12\p@ \@plus 2\p@ \@minus 2\p@}
\setlength\dbltextfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@}
%</10pt>
%<*11pt>
\setlength\dblfloatsep {12\p@ \@plus 2\p@ \@minus 2\p@}
\setlength\dbltextfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@}
%</11pt>
%<*12pt>
\setlength\dblfloatsep {14\p@ \@plus 2\p@ \@minus 4\p@}
\setlength\dbltextfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@}
%</12pt>
% \end{macrocode}
% \end{macro}
% \end{macro}
% \paragraph{Floats on their own page or column}
% \begin{macro}{\@fptop}
% \begin{macro}{\@fpsep}
% \begin{macro}{\@fpbot}
% When floating objects are placed on separate pages the layout of
% such pages is controlled by these parameters. At the top of the
% page |\@fptop| amount of stretchable whitespace is inserted, at
% the bottom of the page we get an |\@fpbot| amount of stretchable
% whitespace. Between adjacent floats the |\@fpsep| is inserted.
% These parameters are used for the placement of floating objects
% in one column mode, or in single column floats in two column
% mode.
% Note that at least one of the two parameters |\@fptop| and
% |\@fpbot| should contain a |plus ...fil| to allow filling the
% remaining empty space.
% \begin{macrocode}
%<*10pt>
\setlength\@fptop{0\p@ \@plus 1fil}
\setlength\@fpsep{8\p@ \@plus 2fil}
\setlength\@fpbot{0\p@ \@plus 1fil}
%</10pt>
%<*11pt>
\setlength\@fptop{0\p@ \@plus 1fil}
\setlength\@fpsep{8\p@ \@plus 2fil}
\setlength\@fpbot{0\p@ \@plus 1fil}
%</11pt>
%<*12pt>
\setlength\@fptop{0\p@ \@plus 1fil}
\setlength\@fpsep{10\p@ \@plus 2fil}
\setlength\@fpbot{0\p@ \@plus 1fil}
%</12pt>
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \begin{macro}{\@dblfptop}
% \begin{macro}{\@dblfpsep}
% \begin{macro}{\@dblfpbot}
% Double column floats in two column mode are handled with similar
% parameters.
% \begin{macrocode}
%<*10pt>
\setlength\@dblfptop{0\p@ \@plus 1fil}
\setlength\@dblfpsep{8\p@ \@plus 2fil}
\setlength\@dblfpbot{0\p@ \@plus 1fil}
%</10pt>
%<*11pt>
\setlength\@dblfptop{0\p@ \@plus 1fil}
\setlength\@dblfpsep{8\p@ \@plus 2fil}
\setlength\@dblfpbot{0\p@ \@plus 1fil}
%</11pt>
%<*12pt>
\setlength\@dblfptop{0\p@ \@plus 1fil}
\setlength\@dblfpsep{10\p@ \@plus 2fil}
\setlength\@dblfpbot{0\p@ \@plus 1fil}
%</12pt>
%<*lettGF>
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \subsection{Page Styles}
% The page style \pstyle{foo} is defined by defining the command
% |\ps@foo|. This command should make only local definitions.
% There should be no stray spaces in the definition, since they
% could lead to mysterious extra spaces in the output (well, that's
% something that should be always avoided).
% \begin{macro}{\@evenhead}
% \begin{macro}{\@oddhead}
% \begin{macro}{\@evenfoot}
% \begin{macro}{\@oddfoot}
% The |\ps@...| command defines the macros |\@oddhead|,
% |\@oddfoot|, |\@evenhead|, and |\@evenfoot| to define the running
% heads and feet---e.g., |\@oddhead| is the macro to produce the
% contents of the heading box for odd-numbered pages. It is called
% inside an |\hbox| of width |\textwidth|.
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \subsubsection{Marking conventions}
% To make headings determined by the sectioning commands, the page
% style defines the commands |\chaptermark|, |\sectionmark|,
% \ldots, where |\chaptermark{|\meta{text}|}| is called by
% |\chapter| to set a mark, and so on.
% The |\...mark| commands and the |\...head| macros are defined
% with the help of the following macros. (All the |\...mark|
% commands should be initialized to no-ops.)
% \LaTeX{} extends \TeX's |\mark| facility by producing two kinds
% of marks, a `left' and a `right' mark, using the following
% commands:
% \begin{flushleft}
% |\markboth{|\meta{left}|}{|\meta{right}|}|: Adds both marks.
% |\markright{|\meta{right}|}|: Adds a `right' mark.
% |\leftmark|: Used in the |\@oddhead|, |\@oddfoot|, |\@evenhead|
% or |\@evenfoot| macros, it gets the current `left'
% mark. |\leftmark| works like \TeX's |\botmark|
% command.
% |\rightmark|: Used in the |\@oddhead|, |\@oddfoot|, |\@evenhead|
% or |\@evenfoot| macros, it gets the current
% `right' mark. |\rightmark| works like \TeX's
% |\firstmark| command.
% \end{flushleft}
% The marking commands work reasonably well for right marks
% `numbered within' left marks--e.g., the left mark is changed by a
% |\chapter| command and the right mark is changed by a |\section|
% command. However, it does produce somewhat anomalous results if
% two |\markboth|'s occur on the same page.
% Commands like |\tableofcontents| that should set the marks in some
% page styles use a |\@mkboth| command, which is |\let| by the
% pagestyle command (|\ps@...|) to |\markboth| for setting the
% heading or to |\@gobbletwo| to do nothing.
% \begin{macrocode}
% %%%\mark{{}{}} % Initializes TeX's marks <--- can vanish
% \end{macrocode}
% \subsubsection{Defining the page styles}
% \label{sec:pagestyle}
% The pagestyles \pstyle{empty} and \pstyle{plain} are defined in
% \file{latex.tex}.
% \begin{macro}{\ps@headings}
% The definition of the page style \pstyle{headings} has to be
% different for two sided printing than it is for one sided
% printing.
% \begin{macrocode}
\ifthenelse{\boolean{@twoside}}
{\def\ps@headings{%
% \end{macrocode}
% The running feet are empty in this page style.
% \begin{macrocode}
\let\@oddfoot\@empty
\let\@evenfoot\@empty
% \end{macrocode}
% The running head contains some information about this letter. The
% head is the same for even and odd pages.
% \begin{macrocode}
\ifthenelse{\setboolean{noheader}}
{\let\@oddhead\@empty}
{\setlength\headheight{36\p@}
\def\@oddhead{\@setheader}}
\let\@evenhead\@oddhead}}
% \end{macrocode}
% For one sided printing we don't need to define |\@evenhead| so
% the definition is somewhat simpler.
% \begin{macrocode}
{\def\ps@headings{%
\let\@oddfoot\@empty
\ifthenelse{\setboolean{noheader}}
{\let\@oddhead\@empty}
{\setlength\headheight{36\p@}
\def\@oddhead{\@setheader}}}}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\ps@empty}
% The definition of the page style \pstyle{empty} is simple:
% No running head or foot at all.
% \begin{macrocode}
\def\ps@empty{%
\let\@oddfoot\@empty
\let\@oddhead\@empty
\let\@evenfoot\@empty
\let\@evenhead\@empty}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\ps@firstpage}
% The page style \pstyle{firstpage} puts the telephone number
% in the proper place for the letterhead. It should be adapted
% to site conventions. The size of the number is determined
% depending on the main size.
% \begin{macrocode}
\def\ps@firstpage{%
\ifnoheader
\let\@oddhead\@empty
\else
\setlength\headheight{36\p@}
\def\@evenhead{\@setheader}
\fi
\def\@oddfoot{\raisebox{0\p@}[\z@]{\@setfooter}
\hss}}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\ps@plain}
% The definition of the page style \pstyle{plain} is again simple.
% \begin{macrocode}
\def\ps@plain{%
\ifnoheader
\let\@oddhead\@empty
\else
\setlength\headheight{36\p@}
\def\@oddhead{\@setheader}
\fi
\def\@oddfoot{
\rmfamily
\hfil
\thepage
\ifthenelse{\boolean{faxpaper}}
{/\pagenum}
{}
\hfil}%
\let\@evenfoot\@oddfoot}%
% \end{macrocode}
% \end{macro}
% \subsection{documentbegin/end with faxoption}
% At the end of the document write out the total number of
% page in the auxfile.
% \begin{macrocode}
\ifthenelse{\boolean{faxpaper}}
{\@fileswtrue
\AtEndDocument{
\addtocounter{page}{-1}
\immediate\write\@mainaux{\string\def\string\pagenum{\thepage}}
\addtocounter{page}{1}
}}
{\@fileswfalse}
% \end{macrocode}
% \section{Document Markup}
% \subsection{Global Declarations}
% \begin{macro}{\leftfield}
% Width of the left part of the headline.
% \begin{macrocode}
\setlength\unitlength{\p@}
\newlength{\leftfield}
\setlength\leftfield{0.6\textwidth}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\rightfield}
% Width of the right part of the headline.
% \begin{macrocode}
\newlength{\rightfield}
\setlength\rightfield{\textwidth}
\addtolength{\rightfield}{-\leftfield}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\@date}
% This macro uses the \TeX\ primitives |\month|, |\day| and |\year|
% to provide the date of the \LaTeX-run.
% \begin{macrocode}
\providecommand{\@date}
{\newboolean{@datelongboo}
\setboolean{@datelongboo}{false}
\ifthenelse{\equal{\@yref}{}}
{\ifthenelse{\equal{\@myref}{}}
{\setboolean{@datelongboo}{true}}{}
}{}
\ifthenelse{\equal{\@ymail}{}}
{\ifthenelse{\boolean{fax}}
{\ifthenelse{\equal{\@myref}{}}
{\setboolean{@datelongboo}{true}}{}
\ifthenelse{\equal{\@yref}{}}
{\setboolean{@datelongboo}{true}}{}
}
{\setboolean{@datelongboo}{true}}{}
}
{\ifthenelse{\boolean{fax}}
{}
{\ifthenelse{\equal{\@myref}{}}
{\setboolean{@datelongboo}{true}}{}
\ifthenelse{\equal{\@yref}{}}
{\setboolean{@datelongboo}{true}}{}
}
}
\ifthenelse{\boolean{@datelongboo}}
{\@datelong}
{\@dateshort}
}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\@date}
% Macro to to caculate the actual time, but not to print it.
% \begin{macrocode}
\newcommand{\@calculate@time}{
% \end{macrocode}
% expands to the actual time (hours:minutes)
% written by Dimitris Dranidis
% (modified by Michael Mehlich to avoid temporary counter)
% \begin{macrocode}
\newcount\hours
\newcount\minutes
% \end{macrocode}
% calculate hours and minutes\\
% hours = time/60 = ((time/60)*60)/60\\
% minutes = time-(time/60)*60\\
% \begin{macrocode}
\minutes\time
\hours\minutes\divide\hours60\multiply\hours60
\advance\minutes-\hours
\divide\hours60
% \end{macrocode}
% \end{macro}
% \begin{macro}{\@date}
% macro to output calculated time
% \begin{macrocode}
\def\@time{\@calculate@time
\the\hours:%
\ifnum\minutes<10
0%
\else
\fi
\the\minutes}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\pagenum}
% \begin{macro}{\@yref}
% \begin{macro}{\@mref}
% \begin{macro}{\@ymaildate}
% \begin{macro}{\@subject}
% We make sure that the internal control sequences that are used to
% store the information exist and are empty.
% \begin{macrocode}
\def\pagenum{??}
\def\@yref{}
\def\@mref{}
\def\@ymaildate{}
\def\@subject{}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\@setheader}
% Command to print the header, that exist out of two parts.
% \begin{macrocode}
\newcommand{\@setheader}
{\parbox[t]{\textwidth}%
% \end{macrocode}
% Set the left part.
% \begin{macrocode}
{\parbox[b]{\leftfield}
{\ifcase\@ptsize\relax
\LARGE
\or
\Large
\or
\large
\fi
\sffamily\fromname}%
% \end{macrocode}
% Set the right part with the picture or anythingelse.
% \begin{macrocode}
\parbox[b]{\rightfield}
{\hfill
\ifx\bilddateiname\empty
\else
\input{\bilddateiname}%
\csname set\bilddateiname\endcsname%
\fi}\\[1mm]%
\rule{\textwidth}{0.1mm}
}%
% \end{macrocode}
% \end{macro}
% \begin{macro}{\@setfooter}
% Command to print the footer, which contents the bankconnection
% or/and the full adress.
% \begin{macrocode}
\newcommand{\@setfooter}
{\parbox[b]{\textwidth}
{\ifcase\@ptsize\relax
\small
\or
\footnotesize
\or
\scriptsize
\fi
\tabcolsep0.5ex
% \end{macrocode}
% Print the full address.
% \begin{macrocode}
\ifthenelse{\boolean{fulladdress}}
{\sffamily\rule{\textwidth}{1pt}
\begin{tabular}{l}
\fromname\\
\fromstreet\\
\fromlocation
\end{tabular}
\hfill
\begin{tabular}{ll}
\telephonestr:&\precode/\telephonenum\\
\faxnrstr: &\precode/\myfax\\
\emailadrstr: &\myemail
\end{tabular}
% \end{macrocode}
% Print the bankconnection.
% \begin{macrocode}
\ifthenelse{\boolean{bankconnection}}
{\hfill
\begin{tabular}{ll}
\banknamestr: &\bankname\\
\banknrstr: &\banknr\\
\accountnrstr: &\accountnr
\end{tabular}
}{}
}
{\ifthenelse{\boolean{bankconnection}}
{\sffamily\rule{\textwidth}{1pt}
\underline{\bankconnectionstr:} \bankname \hfill
\banknrstr: \banknr \hfill \accountnrstr: \accountnr
}{}
}
}
% \end{macrocode}
% \end{macro}
% \subsection{The generic letter commands}
% \begin{environment}{letter}
% The letter environment creates a new letter, starting from page 1.
% (The first page is unnumbered.) It has a single argument, which
% is the addressee and his address, as in
%\begin{verbatim}
% \begin{letter}{Sam Jones \\
% Institute for Retarded Study\\
% Princeton, N.J.}
%\end{verbatim}
% Local declarations, such as |\address|, can follow the
% |\begin{letter}|.
% \begin{macrocode}
\newenvironment{letter}[2][empty]
{\pagestyle{plain}
\newpage
\ifthenelse{\boolean{@twoside}}
{\ifthenelse{\isodd{\c@page}}
{}
{\thispagestyle{plain} \hbox{}\newpage}
}{}
\c@page\@ne
\interlinepenalty=200 % smaller than the TeXbook value
\ifthenelse{\boolean{mletterboo}}
{\ifthenelse{\equal{#1}{empty}}
{}
{\ClassError{\ClassName}{\errormesc}{\errorhelpc}}
\ifthenelse{\equal{#2}{\empty}}
{}
{\ClassError{\ClassName}{\errormesc}{\errorhelpc}}}
{\searchaddress[#1]{#2}}
% \end{macrocode}
% The |\leavevmode| and |\ignorespaces| commands are there for
% protecting against an empty argument.
% \begin{macrocode}
\@processto{\leavevmode\ignorespaces \csname\adr\endcsname}}
% \end{macrocode}
% The end of the environment possibly writes the address
% information on the \file{.aux} file.
% \begin{macrocode}
{\stopletter\@@par
\ifthenelse{\value{psnum}=1}{\psname\space\@ps\\}{}
\pagebreak\@@par}
% \end{macrocode}
% \end{environment}
% \begin{macro}{\@processto}
% \begin{macro}{\@xproc}
% \begin{macro}{\@yproc}
% |\@processto| gets the |\toname| and |\toaddress| from the letter
% environment's macro argument. |\@xproc| and |\@yproc| are auxiliary
% macros.
% \begin{macrocode}
\long\def\@processto#1{\@xproc #1\\@@@\ifx\toaddress\@empty
\else \@yproc #1@@@\fi}
\long\def\@xproc #1\\#2@@@{\def\toname{#1}\def\toaddress{#2}}
\long\def\@yproc #1\\#2@@@{\def\toaddress{#2}}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \subsubsection{Page breaking control}
% \begin{macro}{\stopbreaks}
% When the command |\stopbreaks| is issued no page breaks should
% occur until |\startbreaks| is called.
% \begin{macrocode}
\newcommand*{\stopbreaks}{\interlinepenalty \@M
\def\par{\@@par\nobreak}\let\\=\@nobreakcr
\let\vspace\@nobreakvspace}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\nobreakvspace}
% \begin{macro}{\nobreakvspacex}
% \begin{macro}{\nobreakcr}
% These are needed by |\stopbreaks|
% \begin{macrocode}
\def\@nobreakvspace{\@ifstar{\@nobreakvspacex}{\@nobreakvspacex}}
\def\@nobreakvspacex#1{\ifvmode\nobreak\vskip #1\relax\else
\@bsphack\vadjust{\nobreak\vskip #1}\@esphack\fi}
\def\@nobreakcr{\vadjust{\penalty\@M}\@ifstar{\@xnewline}{\@xnewline}}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \begin{macro}{\startbreaks}
% This cancels the effect of |\stopbreaks|.
% \begin{macrocode}
\newcommand*{\startbreaks}{\let\\=\@normalcr
\interlinepenalty 200\def\par{\@@par\penalty 200\relax}}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\to@label}
% Because the german post can deliver the letters faster, if the
% addresslabel written in sanserif 10pt-12pt, because of maschinell
% reading.
% \begin{macrocode}
\newcommand{\to@label}[2]
{\setbox0\vbox
{\parbox{\leftfield}
{\ifcase\@ptsize\relax
\LARGE
\or
\Large
\or
\large
\fi
\sf#1\\#2}}
\vbox to 3.5cm{\vss\box0\vss}}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\longindentation}
% The size of the indent to use before the closing of the letter.
% \begin{macrocode}
\newdimen\longindentation
\longindentation=.5\textwidth
% \end{macrocode}
% \end{macro}
% \begin{macro}{\indentedwidth}
% The width of the closing of the letter.
% \begin{macrocode}
\newdimen\indentedwidth
\indentedwidth=\textwidth
\advance\indentedwidth -\longindentation
% \end{macrocode}
% \end{macro}
% \begin{macro}{\opening}
% Text is begun with the |\opening| command, whose argument
% generates the salutation, as in
%\begin{verbatim}
% \opening{Dear Henry,}
%\end{verbatim}
% This should produce everything up to and including the `Dear Henry,'
% and a \par command that follows. Since there's a |\vfil| at the
% bottom of every page, it can add vertical fill to position a short
% letter. It should use the following commands:
% \begin{itemize}
% \item |\toname| : name part of `to' address.
% Will be one line long.
% \item |\toaddress| : address part of `to' address.
% The lines separated by |\\|.
% \item |\fromname| : name of sender.
% \item |\fromaddress| : argument of current |\address|
% declaration-- null if none. Should use standard institutional
% address if null.
% \item |\fromlocation| : argument of current |\location|
% declaration--null if none.
% \item |\telephonenum| : argument of current |\telephone|
% declaration--null if none.
% \end{itemize}
% \begin{macrocode}
\newcommand{\opening}[2][empty]{
\thispagestyle{firstpage}
\parbox[t]{\leftfield}
{\ifcase \@ptsize\relax
\normalsize
\or
\small
\or
\footnotesize
\fi
\underline{\sf \fromaddress}\\
\to@label{\toname}{\toaddress}
}
\parbox[t]{\rightfield}{}
\par
\rule{\textwidth}{0.1mm}
\tabcolsep0em
\begin{tabular}{l}
\ifcase \@ptsize\relax
\small
\or
\footnotesize
\or
\scriptsize
\fi
\datestr\\
\normalsize
\@date
\end{tabular}
\ifthenelse{\boolean{faxpaper}}
{\hfill
\begin{tabular}{c}
\ifcase \@ptsize\relax
\small
\or
\footnotesize
\or
\scriptsize
\fi
\timestr\\
\normalsize
\@time
\end{tabular}
\hfill
\begin{tabular}{c}
\ifcase \@ptsize\relax
\small
\or
\footnotesize
\or
\scriptsize
\fi
\pagenumstr\\
\normalsize
\pagenum
\end{tabular}
}
\hfill
\ifthenelse{\equal{\@myref}{\empty}}
{}
{\begin{tabular}{c}
\ifcase\@ptsize\relax
\small
\or
\footnotesize
\or
\scriptsize
\fi
\myrefname\\
\normalsize
\@myref
\end{tabular}\hfill
}
\ifthenelse{\equal{\@yref}{\empty}}
{}
{\begin{tabular}{c}
\ifcase\@ptsize\relax
\small
\or
\footnotesize
\or
\scriptsize
\fi
\yrefstr\\
\normalsize\@yref%
\end{tabular}
\hfill
}
\ifthenelse{\equal{\@ymaildate}{\empty}}
{}
{\begin{tabular}{r}
\ifcase\@ptsize\relax
\small
\or
\footnotesize
\or
\scriptsize
\fi
\ymaildatestr\\
\normalsize\@ymaildate%
\end{tabular}
\hfill
}
\par
\tabcolsep1em
\vspace{3\parskip}
\ifthenelse{\equal{\@subject}{\empty}}
{}
{\ifthenelse{\equal{\subjectstr}{\empty}}
{{\bf \@subject}}
{{\bf\subjectstr}\space\@subject}
\par
\vspace{2\parskip}
}
\ifthenelse{\equal{#1}{empty}}
{\ifthenelse{\equal{#2}{\empty}}
{\openingtext}
{#2}}
{\csname #1\endcsname
\ifthenelse{\equal{#2}{\empty}}
{}
{\space #2},}
\par\nobreak
% \end{macrocode}
% \end{macro}
% \begin{macro}{\closing}
% The body of the letter follows, ended by a |\closing| command,
% as in
%\begin{verbatim}
% \closing{Yours truly,}
%\end{verbatim}
% This command generates the closing matter, and the signature.
% An obvious thing to do is to use a |\parbox| for the closing
% and the signature. Should use the following:
% \begin{itemize}
% \item |\fromsig| : argument of current |\signature| declaration
% or, if null, the |\fromname|.
% \item |\stopbreaks| : a macro that inhibits page breaking.
% \end{itemize}
% \begin{macrocode}
\newcommand{\closing}[1]{
\par\nobreak\vspace{\parskip}%
\stopbreaks%
\noindent%
\hspace*{\longindentation}%
\parbox{\indentedwidth}
{\raggedright
\ifthenelse{\equal{#1}{\empty}}
{\closingtext}
{\@ifundefined{#1}%
{#1}
{\csname #1\endcsname}
}\\
\ifthenelse{\equal{\csname\contactstr\endcsname}{\contactgood}}%
{Dein%
\ifthenelse{\boolean{faxpaper}}%
{\ifthenelse{\equal{\unterschriftdateiname}{\empty}}%
{\vspace{6\medskipamount}}%
{\par%
\vspace{3\medskipamount}%
\hspace{1em}%
\input{\unterschriftdateiname}%
\csname set\unterschriftdateiname\endcsname%
\par}}
{\vspace{6\medskipamount}}
}
{\ifthenelse{\boolean{faxpaper}}%
{\ifthenelse{\equal{\unterschriftdateiname}{\empty}}%
{\vspace{6\medskipamount}}%
{\par%
\vspace{3 \medskipamount}%
\hspace{1em}%
\input{\unterschriftdateiname}%
\csname set\unterschriftdateiname\endcsname%
\par}}
{\vspace{6\medskipamount}}%
\vspace{1\medskipamount}%
\ifthenelse{\equal{\fromsig}{\empty}}%
{}
{(\fromsig)}
}%
\strut
}%
\vfill}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\smallskipamount}
% \begin{macro}{\mdeskipamount}
% \begin{macro}{\bigskipamount}
% Of these three, only |\medskipmount| is actually used above.
% \begin{macrocode}
%\smallskipamount=.5\parskip
\medskipamount=\parskip
%\bigskipamount=2\parskip
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \begin{macro}{\cc}
% \begin{macro}{\encl}
% \begin{macro}{\ps}
% After the |\closing| you can put arbitrary stuff, which is typeset
% with zero |\parindent| and no page breaking. Commands designed
% for use after the closing are:
% \begin{verbatim}
% \cc{Tinker\\Evers\\Chance}
%\end{verbatim}
% which produces:\\
% \begin{tabular}{ll}
% cc: & Tinker\\
% & Evers\\
% & Chance
% \end{tabular}\\
% Note the obvious use of |\parbox|.
% \begin{macrocode}
\newlength{\word}
\newcommand*{\cc}[1]{%
\par\noindent
\parbox[t]{\textwidth}{%
\@hangfrom{\reset@font\rm \ccname: }%
\ignorespaces #1\strut}\par}
% \end{macrocode}
%\begin{verbatim}
% \encl{Foo(2)\\Bar}
%\end{verbatim}
% which produces:\\
% \begin{tabular}{ll}
% encl: & Foo(2)\\
% & Bar
% \end{tabular}
% \begin{macrocode}
\newcommand*{\encl}[1]{%
\par\noindent
\parbox[t]{\textwidth}{%
\@hangfrom{\reset@font\rm \enclname: }%
\ignorespaces #1\strut}\par}
% \end{macrocode}
%\begin{verbatim}
% \ps{Bar}
%\end{verbatim}
% which produces:\\
% PS.: Bar
%\begin{verbatim}
% \ps{Foo(2)
% \ps{Bar}
%\end{verbatim}
% \begin{tabular}{ll}
% encl: & 1) Foo(2)\\
% & 2) Bar
% \end{tabular}
% \begin{macrocode}
\newcounter{psnum}
\newcommand*{\ps}[1]
{\stepcounter{psnum}
\ifthenelse{\value{psnum}=1}
{\def\@ps{#1}}
{\ifthenelse{\value{psnum}=2}
{\psname\space1.\ \@ps\\}
{}
\settowidth{\word}{\psname\space}
\hspace*{\word}\the\value{psnum}.\ #1\\}}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \begin{macro}{\stopletter}
% The |\stopletter| command is called by |\endletter| to do the
% following:
% Add any desired fill or other material at the end of the
% letter.
% \begin{macrocode}
\newcommand*{\stopletter}{}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\fromaddress}
% The return address for the labels can be stored in this
% macro.
% \begin{macrocode}
\newcommand*{\fromaddress}
{\fromname\space
\fromstreet\space
\fromlocation}
% \end{macrocode}
% \end{macro}
% \subsection{Lists}
% \subsubsection{General List Parameters}
% The following commands are used to set the default values for the list
% environment's parameters. See the \LaTeX{} manual for an explanation
% of the meanings of the parameters. Defaults for the list
% environment are set as follows. First, |\rightmargin|,
% |\listparindent| and |\itemindent| are set to 0pt. Then, for a Kth
% level list, the command |\@listK| is called, where `K' denotes `i',
% `i', ... , `vi'. (I.e., |\@listiii| is called for a third-level
% list.) By convention, |\@listK| should set |\leftmargin| to
% |\leftmarginK|.
% \begin{macro}{\leftmargin}
% \begin{macro}{\leftmargini}
% \begin{macro}{\leftmarginii}
% \begin{macro}{\leftmarginiii}
% \begin{macro}{\leftmarginiv}
% \begin{macro}{\leftmarginv}
% \begin{macro}{\leftmarginvi}
% For efficiency, level-one list's values are defined at top level, and
% |\@listi| is defined to set only |\leftmargin|.
% \begin{macrocode}
\setlength\leftmargini {2.5em}
% \end{macrocode}
% The following three are calculated so that they are larger than
% the sum of |\labelsep| and the width of the default labels (which
% are `(m)', `vii.' and `M.').
% \begin{macrocode}
\setlength\leftmarginii {2.2em}
\setlength\leftmarginiii {1.87em}
\setlength\leftmarginiv {1.7em}
\setlength\leftmarginv {1em}
\setlength\leftmarginvi {1em}
% \end{macrocode}
% Here we set the top level leftmargin.
% \begin{macrocode}
\setlength\leftmargin {\leftmargini}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \begin{macro}{\labelsep}
% \begin{macro}{\labelwidth}
% |\labelsep| is the distance between the label and the text of an
% item; |\labelwidth| is the width of the label.
% \begin{macrocode}
\setlength \labelsep {5\p@}
\setlength \labelwidth{\leftmargini}
\addtolength\labelwidth{-\labelsep}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \begin{macro}{\partopsep}
% When the user leaves a blank line before the environment an extra
% vertical space of |\partopsep| is inserted, in addition to
% |\parskip| and |\topsep|.
% \begin{macrocode}
%<10pt>\setlength\partopsep{2\p@ \@plus 1\p@ \@minus 1\p@}
%<11pt>\setlength\partopsep{3\p@ \@plus 1\p@ \@minus 1\p@}
%<12pt>\setlength\partopsep{3\p@ \@plus 2\p@ \@minus 2\p@}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\@beginparpenalty}
% \begin{macro}{\@endparpenalty}
% These penalties are inserted before and after a list or paragraph
% environment. They are set to a bonus value to encourage page
% breaking at these points.
% \begin{macro}{\@itempenalty}
% This penalty is inserted between list items.
% \begin{macrocode}
\@beginparpenalty -\@lowpenalty
\@endparpenalty -\@lowpenalty
\@itempenalty -\@lowpenalty
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \begin{macro}{\@listI}
% \begin{macro}{\@listi}
% |\@listI| defines top level and |\@listi| values of
% |\leftmargin|, |\parsep|, |\topsep|, and |\itemsep|
% \begin{macrocode}
%<*10pt|11pt|12pt>
\def\@listI{\leftmargin\leftmargini
%<*10pt>
\parsep 4\p@ \@plus2\p@ \@minus\p@
\topsep 8\p@ \@plus2\p@ \@minus4\p@
\itemsep4\p@ \@plus2\p@ \@minus\p@}
%</10pt>
%<*11pt>
\parsep 4.5\p@ \@plus2\p@ \@minus\p@
\topsep 9\p@ \@plus3\p@ \@minus5\p@
\itemsep4.5\p@ \@plus2\p@ \@minus\p@}
%</11pt>
%<*12pt>
\parsep 5\p@ \@plus2.5\p@ \@minus\p@
\topsep 10\p@ \@plus4\p@ \@minus6\p@
\itemsep5\p@ \@plus2.5\p@ \@minus\p@}
%</12pt>
\let\@listi\@listI
% \end{macrocode}
% We have to initialize these parameters.
% \begin{macrocode}
\@listi
% \end{macrocode}
% \end{macro}
% \end{macro}
% \begin{macro}{\@listii}
% \begin{macro}{\@listiii}
% \begin{macro}{\@listiv}
% \begin{macro}{\@listv}
% \begin{macro}{\@listvi}
% Here are the same macros for the higher level lists.
% \begin{macrocode}
\def\@listii {\leftmargin\leftmarginii
\labelwidth\leftmarginii
\advance\labelwidth-\labelsep
%<*10pt>
\topsep 4\p@ \@plus2\p@ \@minus\p@
\parsep 2\p@ \@plus\p@ \@minus\p@
%</10pt>
%<*11pt>
\topsep 4.5\p@ \@plus2\p@ \@minus\p@
\parsep 2\p@ \@plus\p@ \@minus\p@
%</11pt>
%<*12pt>
\topsep 5\p@ \@plus2.5\p@ \@minus\p@
\parsep 2.5\p@ \@plus\p@ \@minus\p@
%</12pt>
\itemsep \parsep}
\def\@listiii{\leftmargin\leftmarginiii
\labelwidth\leftmarginiii
\advance\labelwidth-\labelsep
%<10pt> \topsep 2\p@ \@plus\p@\@minus\p@
%<11pt> \topsep 2\p@ \@plus\p@\@minus\p@
%<12pt> \topsep 2.5\p@\@plus\p@\@minus\p@
\parsep \z@
\partopsep \p@ \@plus\z@ \@minus\p@
\itemsep \topsep}
\def\@listiv {\leftmargin\leftmarginiv
\labelwidth\leftmarginiv
\advance\labelwidth-\labelsep}
\def\@listv {\leftmargin\leftmarginv
\labelwidth\leftmarginv
\advance\labelwidth-\labelsep}
\def\@listvi {\leftmargin\leftmarginvi
\labelwidth\leftmarginvi
\advance\labelwidth-\labelsep}
%</10pt|11pt|12pt>
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \subsubsection{Enumerate}
% The enumerate environment uses four counters: \Lcount{enumi},
% \Lcount{enumii}, \Lcount{enumiii} and \Lcount{enumiv}, where
% \Lcount{enumN} controls the numbering of the Nth level
% enumeration.
% \begin{macro}{\theenumi}
% \begin{macro}{\theenumii}
% \begin{macro}{\theenumiii}
% \begin{macro}{\theenumiv}
% The counters are already defined in \file{latex.tex}, but their
% representation is changed here.
% \begin{macrocode}
\renewcommand\theenumi{\arabic{enumi}}
\renewcommand\theenumii{\alph{enumii}}
\renewcommand\theenumiii{\roman{enumiii}}
\renewcommand\theenumiv{\Alph{enumiv}}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \begin{macro}{\labelenumi}
% \begin{macro}{\labelenumii}
% \begin{macro}{\labelenumiii}
% \begin{macro}{\labelenumiv}
% The commands |\labelenumi| ... |\labelenumiv| generate the label
% for each item.
% \begin{macrocode}
\newcommand\labelenumi{\theenumi.}
\newcommand\labelenumii{(\theenumii)}
\newcommand\labelenumiii{\theenumiii.}
\newcommand\labelenumiv{\theenumiv.}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \begin{macro}{\p@enumii}
% \begin{macro}{\p@enumiii}
% \begin{macro}{\p@enumiv}
% The expansion of |\p@enumN||\theenumN| defines the output of a
% |\ref| command when referencing an item of the Nth level of an
% enumerated list.
% \begin{macrocode}
\renewcommand\p@enumii{\theenumi}
\renewcommand\p@enumiii{\theenumi(\theenumii)}
\renewcommand\p@enumiv{\p@enumiii\theenumiii}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \subsubsection{Itemize}
% \begin{macro}{\labelitemi}
% \begin{macro}{\labelitemii}
% \begin{macro}{\labelitemiii}
% \begin{macro}{\labelitemiv}
% Itemization is controlled by |\labelitemi|,
% |\labelitemii|, |\labelitemiii|, and |\labelitemiv|, which define
% the labels of the various itemization levels: the symbols used are
% bullet, bold en-dash, asterisk and centered dot.
% \begin{macrocode}
\newcommand\labelitemi{$\m@th\bullet$}
\newcommand\labelitemii{\normalfont\bfseries --}
\newcommand\labelitemiii{$\m@th\ast$}
\newcommand\labelitemiv{$\m@th\cdot$}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \subsubsection{Description}
% \begin{environment}{description}
% The description environment is defined here -- while the itemize
% and enumerate environments are defined in \file{latex.tex}.
% \begin{macrocode}
\newenvironment{description}
{\list{}{\labelwidth\z@ \itemindent-\leftmargin
\let\makelabel\descriptionlabel}}
{\endlist}
% \end{macrocode}
% \end{environment}
% \begin{macro}{\descriptionlabel}
% To change the formatting of the label, you must redefine
% |\descriptionlabel|.
% \begin{macrocode}
\newcommand\descriptionlabel[1]{\hspace\labelsep
\normalfont\bfseries #1}
% \end{macrocode}
% \end{macro}
% \subsection{Defining new environments}
% \subsubsection{Verse}
% \begin{environment}{verse}
% The verse environment is defined by making clever use of the
% list environment's parameters. The user types |\\| to end a line.
% This is implemented by |\let|'ing |\\| equal |\@centercr|.
% \begin{macrocode}
\newenvironment{verse}
{\let\\=\@centercr
\list{}{\setlength\itemsep{\z@}%
\setlength\itemindent{-15\p@}%
\setlength\listparindent{\itemindent}%
\setlength\rightmargin{\leftmargin}%
\addtolength\leftmargin{15\p@}}%
\item[]}
{\endlist}
% \end{macrocode}
% \end{environment}
% \subsubsection{Quotation}
% \begin{environment}{quotation}
% The quotation environment is also defined by making clever use of
% the list environment's parameters. The lines in the environment
% are set smaller than |\textwidth|. The first line of a paragraph
% inside this environment is indented.
% \begin{macrocode}
\newenvironment{quotation}
{\list{}{\setlength\listparindent{1.5em}%
\setlength\itemindent{\listparindent}%
\setlength\rightmargin{\leftmargin}}%
\item[]}
{\endlist}
% \end{macrocode}
% \end{environment}
% \subsubsection{Quote}
% \begin{environment}{quote}
% The quote environment is like the quotation environment except
% that paragraphs are not indented.
% \begin{macrocode}
\newenvironment{quote}
{\list{}{\setlength\rightmargin{\leftmargin}}%
\item[]}
{\endlist}
% \end{macrocode}
% \end{environment}
% \subsubsection{Theorem}
% This document class does not define it's own theorem environments,
% the defaults, supplied by \file{latex.ltx} are available.
% \subsection{Setting parameters for existing environments}
% \subsubsection{Array and tabular}
% \begin{macro}{\arraycolsep}
% The columns in an array environment are separated by
% 2|\arraycolsep|.
% \begin{macrocode}
\setlength\arraycolsep{5\p@}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\tabcolsep}
% The columns in an tabular environment are separated by
% 2|\tabcolsep|.
% \begin{macrocode}
\setlength\tabcolsep{6\p@}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\arrayrulewidth}
% The width of vertical rules in the array and tabular environments
% is given by |\arrayrulewidth|.
% \begin{macrocode}
\setlength\arrayrulewidth{.4\p@}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\doublerulesep}
% The space between adjacent rules in the array and tabular
% environments is given by |\doublerulesep|.
% \begin{macrocode}
\setlength\doublerulesep{2\p@}
% \end{macrocode}
% \end{macro}
% \subsubsection{Tabbing}
% \begin{macro}{\tabbingsep}
% This controls the space that the |\'| command puts in. (See
% \LaTeX{} manual for an explanation.)
% \begin{macrocode}
\setlength\tabbingsep{\labelsep}
% \end{macrocode}
% \end{macro}
% \subsubsection{Minipage}
% \begin{macro}{\@minipagerestore}
% The macro |\@minipagerestore| is called upon entry to a minipage
% environment to set up things that are to be handled differently
% inside a minipage environment. In the current styles, it does
% nothing.
% \end{macro}
% \begin{macro}{\@mpfootins}
% Minipages have their own footnotes; |\skip||\@mpfootins| plays
% same r\^ole for footnotes in a minipage as |\skip||\footins| does
% for ordinary footnotes.
% \begin{macrocode}
\skip\@mpfootins = \skip\footins
% \end{macrocode}
% \end{macro}
% \subsubsection{Framed boxes}
% \begin{macro}{\fboxsep}
% The space left by |\fbox| and |\framebox| between the box and the
% text in it.
% \begin{macro}{\fboxrule}
% The width of the rules in the box made by |\fbox| and |\framebox|.
% \begin{macrocode}
\setlength\fboxsep{3\p@}
\setlength\fboxrule{.4\p@}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \subsubsection{Equation and eqnarray}
% \begin{macro}{\theequation}
% The equation counter will be typeset using arabic numbers.
% \begin{macrocode}
\renewcommand\theequation{\arabic{equation}}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\jot}
% |\jot| is the extra space added between lines of an eqnarray
% environment. The default value is used.
% \begin{macrocode}
% \setlength\jot{3pt}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\@eqnnum}
% The macro |\@eqnnum| defines how equation numbers are to appear in
% equations. Again the default is used.
% \begin{macrocode}
% \def\@eqnnum{(\theequation)}
% \end{macrocode}
% \end{macro}
% \subsection{Font changing}
% Here we supply the declarative font changing commands that were
% common in \LaTeX\ version 2.09 and earlier. These commands work
% in text mode \emph{and} in math mode. They are provided for
% compatibility, but one should start using the |\text...| and
% |\math...| commands instead. These commands are redefined using
% |\@renewfontswitch|, a command with three arguments: the user
% command to be defined; \LaTeX\ commands to execute in text mode
% and \LaTeX\ commands to execute in math mode.
% \begin{macro}{\rm}
% \begin{macro}{\tt}
% \begin{macro}{\sf}
% The commands to change the family.
% \begin{macrocode}
\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \begin{macro}{\bf}
% The command to change to the bold series. One should use
% |\mdseries| to explicitly switch back to medium series.
% \begin{macrocode}
\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\sl}
% \begin{macro}{\it}
% \begin{macro}{\sc}
% And the commands to change the shape of the font. The slanted and
% small caps shapes are not available by default as math alphabets,
% so those changes do nothing in math mode. One should use
% |\upshape| to explicitly change back to the upright shape.
% \begin{macrocode}
\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\relax}
\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\relax}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \begin{macro}{\cal}
% \begin{macro}{\mit}
% The commands |\cal| and |\mit| should only be used in math mode,
% outside math mode they have no effect. Currently the New Font
% Selection Scheme defines these commands to generate warning
% messages. Therefore we have to define them `by hand'.
% \begin{macrocode}
\DeclareRobustCommand*{\cal}{\@fontswitch{\relax}{\mathcal}}
\DeclareRobustCommand*{\mit}{\@fontswitch{\relax}{\mathnormal}}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \subsection{Footnotes}
% \begin{macro}{\footnoterule}
% Usually, footnotes are separated from the main body of the text
% by a small rule. This rule is drawn by the macro |\footnoterule|.
% We have to make sure that the rule takes no vertical space (see
% \file{plain.tex}) so we compensate for the natural height of the
% rule of 0.4pt by adding the right amount of vertical skip.
% To prevent the rule from colliding with the footnote we first add
% a little negative vertical skip, then we put the rule and make
% sure we end up at the same point where we begun this operation.
% \begin{macrocode}
\renewcommand\footnoterule{%
\kern-\p@
\hrule \@width .4\columnwidth
\kern .6\p@}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\c@footnote}
% A counter for footnotes.
% \begin{macrocode}
% \newcounter{footnote}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\@makefntext}
% The footnote mechanism of \LaTeX{} calls the macro |\@makefntext|
% to produce the actual footnote. The macro gets the text of the
% footnote as its argument and should use |\@makefnmark| to produce
% the mark of the footnote. The macro |\@makefntext| is called when
% effectively inside a |\parbox| of width |\columnwidth| (i.e.,
% with |\hsize| = |\columnwidth|).
% An example of what can be achieved is given by the following piece
% of \TeX\ code.
% \begin{verbatim}
% \long\def\@makefntext#1{%
% \@setpar{\@@par
% \@tempdima = \hsize
% \advance\@tempdima-10pt
% \parshape \@ne 10pt \@tempdima}%
% \par
% \parindent 1em\noindent
% \hbox to \z@{\hss\@makefnmark}#1}
% \end{verbatim}
% The effect of this definition is that all lines of the footnote
% are indented by 10pt, while the first line of a new paragraph is
% indented by 1em. To change these dimensions, just substitute the
% desired value for `10pt' (in both places) or `1em'. The mark is
% flush right against the footnote.
% In these document class we use a simpler macro, in which the
% footnote text is set like an ordinary text paragraph, with no
% indentation except on the first line of a paragraph, and the
% first line of the footnote. Thus, all the macro must do is set
% |\parindent| to the appropriate value for succeeding paragraphs
% and put the proper indentation before the mark.
% \begin{macrocode}
\long\def\@makefntext#1{%
\noindent
\hangindent 5\p@
\hbox to5\p@{\hss\@makefnmark}#1}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\@makefnmark}
% The footnote markers that are printed in the text to point to the
% footnotes should be produced by the macro |\@makefnmark|. We use
% the default definition for it.
% \begin{macrocode}
%\def\@makefnmark{\hbox{$^{\@thefnmark}\m@th$}}
% \end{macrocode}
% \end{macro}
% \subsection{Two column mode}
% \begin{macro}{\columnsep}
% This gives the distance between two columns in two column mode.
% \begin{macrocode}
\setlength\columnsep{10\p@}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\columnseprule}
% This gives the width of the rule between two columns in two
% column mode. We have no visible rule.
% \begin{macrocode}
\setlength\columnseprule{0\p@}
% \end{macrocode}
% \end{macro}
% \subsection{The page style}
% We have \pstyle{empty} pages in this document class by
% default. We use arabic page numbers.
% \begin{macrocode}
\pagestyle{empty}
\pagenumbering{arabic}
% \end{macrocode}
% \subsection{Single or double sided printing}
% We don't try to make each page as long as all the others.
% \begin{macrocode}
\raggedbottom
% \end{macrocode}
% \begin{macro}{\@texttop}
% The document class letter sets |\@texttop| to |\vskip| 0pt plus
% .00006fil on the first page of a letter, which centers a short
% letter on the page. This fil value may have to be changed for
% other letterheads. This setting has to be done after
% |\raggedbottom| is executed, since the latter sets |\@texttop| to
% |\relax|.
% \begin{macrocode}
\def\@texttop{\ifnum\c@page=1\vskip \z@ plus.00006fil\relax\fi}
% \end{macrocode}
% \end{macro}
% We always start in one column mode.
% \begin{macrocode}
\onecolumn
%</lettGF>
% \end{macrocode}
% \section{External options to the standard document classes}
% \subsection{Left equation numbering}
% \begin{macro}{\@eqnnum}
% To put the equation number on the left side of an equation we
% have to use a little trick. The number is shifted |\displaywidth|
% to the left inside a box of (approximately) zero width. This
% fails when the quation is too wide, the equation number than may
% overprint the equation itself.
% \begin{macrocode}
%<*leqno>
\renewcommand{\@eqnnum}{\hbox to .01\p@{}%
\rlap{\reset@font\rmfamily
\hskip -\displaywidth(\theequation)}}
%</leqno>
% \end{macrocode}
% \end{macro}
% \subsection{Flush left equations}
% To get the displayed math environments to print the contents
% flush left (with an indentation) we have to redefine all of
% \LaTeXe's displayed math environments.
% \begin{macro}{\mathindent}
% The amount of indentation of the equations is stored in a register.
% \begin{macrocode}
%<*fleqn>
\newdimen\mathindent
% \end{macrocode}
% The setting of |\mathindent| has to be deferred until the class
% file has been processed, because |\leftmargini| is still 0pt
% wide at the moment \file{fleqn.clo} is read in.
% \begin{macrocode}
\AtEndOfClass{\mathindent\leftmargini}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\[}
% Begin display math;
% \begin{macrocode}
\renewcommand{\[}{\relax
\ifmmode\@badmath
\else
\begin{trivlist}%
\@beginparpenalty\predisplaypenalty
\@endparpenalty\postdisplaypenalty
\item[]\leavevmode
\hbox to\linewidth\bgroup $\m@th\displaystyle %$
\hskip\mathindent\bgroup
\fi}
% \end{macrocode}
% \end{macro}
% \begin{macro}{\]}
% end display math;
% \begin{macrocode}
\renewcommand{\]}{\relax
\ifmmode
\egroup $\hfil% $
\egroup
\end{trivlist}%
\else \@badmath
\fi}
% \end{macrocode}
% \end{macro}
% \begin{environment}{equation}
% The \textsf{equation} environment
% \begin{macrocode}
\renewenvironment{equation}%
{\@beginparpenalty\predisplaypenalty
\@endparpenalty\postdisplaypenalty
\refstepcounter{equation}%
\trivlist \item[]\leavevmode
\hbox to\linewidth\bgroup $\m@th% $
\displaystyle
\hskip\mathindent}%
{$\hfil % $
\displaywidth\linewidth\hbox{\@eqnnum}%
\egroup
\endtrivlist}
% \end{macrocode}
% \end{environment}
% \begin{environment}{eqnarray}
% The \textsf{eqnarray} environment
% \begin{macrocode}
\renewenvironment{eqnarray}{%
\stepcounter{equation}%
\def\@currentlabel{\p@equation\theequation}%
\global\@eqnswtrue\m@th
\global\@eqcnt\z@
\tabskip\mathindent
\let\\=\@eqncr
\setlength{\abovedisplayskip}{\topsep}%
\ifvmode
\addtolength{\abovedisplayskip}{\partopsep}%
\fi
% \end{macrocode}
% When the documentclass uses a non-zero |\parskip| setting the
% |\topsep| might have a negative value to compensate for
% that. Therefor we add |\parskip| to |\abovedisplayskip|.
% \begin{macrocode}
\addtolength{\abovedisplayskip}{\parskip}%
\setlength{\belowdisplayskip}{\abovedisplayskip}%
\setlength{\belowdisplayshortskip}{\abovedisplayskip}%
\setlength{\abovedisplayshortskip}{\abovedisplayskip}%
$$\everycr{}\halign to\linewidth% $$
\bgroup
\hskip\@centering
$\displaystyle\tabskip\z@skip{##}$\@eqnsel&%
\global\@eqcnt\@ne \hskip \tw@\arraycolsep \hfil${##}$\hfil&%
\global\@eqcnt\tw@ \hskip \tw@\arraycolsep
$\displaystyle{##}$\hfil \tabskip\@centering&%
\global\@eqcnt\thr@@
\hbox to \z@\bgroup\hss##\egroup\tabskip\z@skip\cr}%
{\@@eqncr
\egroup
\global\advance\c@equation\m@ne$$% $$
\global\@ignoretrue
}
%</fleqn>
% \end{macrocode}
% \end{environment}
% \Finale
\endinput
% End of file `lettGF.cls'.